% !Mode:: "TeX:UTF-8"

\chapter{项目设计}

\section{项目概述}
\begin{itemize}
\item{项目目标}：在“饿了吧v1.0”的基础上重构，包括：

将项目前端技术从VUE2升级到VUE3；

完成v1.0中未完成的预期功能；

修改v1.中不合理的设计；

查找并修改v1.0中的bug……
\item{项目范围}: 支付界面中点击确认后，将调用支付宝等平台完成实际支付，此功能由其他组开发，本项目组不必开发，直接返回支付成功即可。
\item{项目用户}: 消费者或商家。
\end{itemize}

\section{系统技术选型}
\begin{itemize}
\item{前端}：将项目前端技术从VUE2升级到VUE3
\item{后端}: 使用Java语言，采用Spring Boot的三层架构（Controller、Service、Mapper/Dao）。
\item{数据库}: 创建了business、cart、deliveryaddress、food、orderdetailet、orders、user等7个表结构（后续具体介绍）
\end{itemize}

\section{功能模块设计}
主要分为六个模块：

商家模块（消费者对商家的操作）、购物车模块（购物车状态的更改）、订单配送地址模块（更改以及选择默认地址）、食品（商品）模块、订单模块（对订单的修改）、用户模块（对用户信息的更改）

\begin{itemize}
    \item{商家模块}：
    
    \begin{itemize}
        \item{\bfseries 通过商家类型获取商家列表}：
        
        功能简述：在“饿了吧”首页点击商家分类的按钮（如美食、早餐、跑腿代购、汉堡披萨等）展示出符合分类的商家集合。

        接口设计：BusinessController/listBusinessByOrderTypeId
        \item{\bfseries 通过商家编号获取商家}：
        
        功能简述：商家编号是商家表的主键，通过这个获取商家。

        接口设计：BusinessController/getBusinessById
        \item{\bfseries 通过商家名称获取（查找）商家}：
        
        功能简述：可以通过商家名称查找商家。

        接口设计：BusinessController/listBusinessByname
        \item{\bfseries 增加商家销量}：
        
        功能简述：用户下订单后商家销量+1。

        接口设计：BusinessController/updateBusinessSale
        \item{\bfseries 注册商家}：
        
        功能简述：用户以商家身份注册账号。

        接口设计：BusinessController/addBusiness
        \item{\bfseries 获取商家地址}：
        
        功能简述：通过商家Id获取商家地址。

        接口设计：BusinessController/listBusinessAddressBybusinessId
        \item{\bfseries 修改商家信息}：
        
        功能简述：修改商家信息。

        接口设计：BusinessController/updateBusiness
    \end{itemize}
    \item{购物车模块}: 
    
    \begin{itemize}
        \item{\bfseries 获取购物车列表}：
        
        功能简述：获取一个消费者用户的所有购物车。

        接口设计：CartController/listCart
        \item{\bfseries 保存购物车}：
        
        功能简述：保存购物车。

        接口设计：CartController/saveCart
        \item{\bfseries 更新购物车}：
        
        功能简述：更新购物车。

        接口设计：CartController/updateCart
        \item{\bfseries 删除购物车}：
        
        功能简述：删除购物车。

        接口设计：CartController/removeCart
    \end{itemize}
    \item{订单配送地址模块}: 
    
    \begin{itemize}
        \item{\bfseries 通过用户ID获取配送地址集合}：
        
        接口设计：DeliveryAddressController/listDeliveryAddressByUserId
        \item{\bfseries 通过用户ID获取地址}：

        接口设计：DeliveryAddressController/getDeliveryAddressById
        \item{\bfseries 保存配送地址信息}：

        接口设计：DeliveryAddressController/saveDeliveryAddress
        \item{\bfseries 更改配送地址信息}：

        接口设计：DeliveryAddressController/updateDeliveryAddress
        \item{\bfseries 删除配送地址信息}：

        接口设计：DeliveryAddressController/removeDeliveryAddress
    \end{itemize}
    \item{食品模块}:
    
    \begin{itemize}
        \item{\bfseries 通过商家编号获取食品集合}：
        
        接口设计：FoodController/listFoodByBusinessId
        \item{\bfseries 删除商品}：

        接口设计：FoodController/delFoodById
        \item{\bfseries 添加商品}：

        接口设计：FoodController/addFoodByBusinessId
        \item{\bfseries 商家获取某商品}：

        接口设计：FoodController/getFoodById
        \item{\bfseries 修改商家信息}：

        接口设计：FoodController/changeFood
    \end{itemize}
    \item{订单模块}:
    
    \begin{itemize}
        \item{\bfseries 创建订单}：
        
        接口设计：OrdersController/createOrders
        \item{\bfseries 通过订单编号获取订单}：

        接口设计：OrdersController/getOrdersById
        \item{\bfseries 通过用户ID获取订单集合}：

        接口设计：OrdersController/listOrdersByUserId
        \item{\bfseries 修改订单状态（变成已支付）}：

        接口设计：OrdersController/updateOrdersState
        \item{\bfseries 取消订单}：

        接口设计：OrdersController/removeOrder
        \item{\bfseries 通过商家Id获取订单集合}：

        接口设计：OrdersController/listOrdersByBusinessId
    \end{itemize}
    \item{用户模块}:
    
    \begin{itemize}
        \item{\bfseries 登录}：
        
        接口设计：UserController/getUserByIdByPass
        \item{\bfseries 通过ID获取用户}：

        接口设计：UserController/getUserById
        \item{\bfseries 更改用户信息}：

        接口设计：UserController/updateUserInfo
        \item{\bfseries 修改用户密码}：

        接口设计：UserController/updateUserPass
        \item{\bfseries 注册}：

        接口设计：UserController/saveUser
        \item{\bfseries 更新消费者积分}：

        接口设计：UserController/UpdateCredit
        \item{\bfseries 通过Id获取用户角色}：
        
        功能简述：通过Id获取用户角色（商家/消费者）

        接口设计：UserController/getUserRoleById
        \item{\bfseries 通过Id获取用户信息}：

        接口设计：UserController/getUserInfoById
    \end{itemize}
    
\end{itemize}
\section{数据库设计}

\begin{itemize}
    \item{\bfseries 总览}：
    \begin{figure}[htbp]
    \centering
    \includegraphics[width=0.6\textwidth]{zl}
    \caption{总览}\label{fig:zl}
    \vspace{\baselineskip}
    \end{figure}
    \item{\bfseries 商家表结构：}：
    \begin{figure}[htbp]
        \centering
        \includegraphics[width=0.6\textwidth]{bus}
        \caption{商家表结构}\label{fig:bus}
        \vspace{\baselineskip}
    \end{figure}
    \item{\bfseries 购物车表结构：}：
    \begin{figure}[htbp]
        \centering
        \includegraphics[width=0.6\textwidth]{gw}
        \caption{购物车表结构}\label{fig:gw}
        \vspace{\baselineskip}
    \end{figure}
    \item{\bfseries 食品表结构：}：
    \begin{figure}[htbp]
        \centering
        \includegraphics[width=0.8\textwidth]{food}
        \caption{食品表结构}\label{fig:food}
        \vspace{\baselineskip}
    \end{figure}
    \item{\bfseries 用户表结构：}：
    \begin{figure}[htbp]
        \centering
        \includegraphics[width=0.6\textwidth]{userb}
        \caption{用户表结构}\label{fig:userb}
        \vspace{\baselineskip}
    \end{figure}
    \item{\bfseries 订单表结构：}：
    \begin{figure}[htbp]
        \centering
        \includegraphics[width=0.6\textwidth]{ddb}
        \caption{订单表结构}\label{fig:ddb}
        \vspace{\baselineskip}
    \end{figure}

    \newpage
    
    \item{\bfseries 送货地址表结构：}：
    \begin{figure}[htbp]
        \centering
        \includegraphics[width=0.6\textwidth]{con}
        \caption{送货地址表结构}\label{fig:con}
        \vspace{\baselineskip}
    \end{figure}
    \item{\bfseries 订单明细表结构：}：
    \begin{figure}[htbp]
        \centering
        \includegraphics[width=0.6\textwidth]{ord}
        \caption{订单明细表结构}\label{fig:ord}
        \vspace{\baselineskip}
    \end{figure}
\end{itemize}


\section{项目进度}
    \begin{figure}[htbp]
        \centering
        \includegraphics[width=0.4\textwidth]{jd}
        \caption{项目进度表}\label{fig:jd}
        \vspace{\baselineskip}
    \end{figure}